﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Proyecto7CAD;
using Proyecto7CAD.Properties;
using System.Configuration;
using System.Data;
using System.Data.Sql;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Collections;

namespace ENProyecto7
{
    public class ENUsuario
    {
        private int idUsuario;
        private int personajeUsuario = 0;
        private int experienciaUsuario;
        private int nivelUsuario;
        private int dineroUsuario;
        private string nombreUsuario;
        private string claveUsuario;
        private string correoUsuario;
        private UsuarioCAD obj;

        public ENUsuario()
        {
            idUsuario = 0;
            personajeUsuario = 0;
            experienciaUsuario = 0;
            nivelUsuario = 0;
            dineroUsuario = 0;
            nombreUsuario = "";
            claveUsuario = "";
            correoUsuario = "";
            obj = new UsuarioCAD();
        }

        public int IdUsuario
        {
            get { return idUsuario; }
            set { idUsuario = value; }
        }

        public int PersonajeUsuario
        {
            get { return personajeUsuario; }
            set { personajeUsuario = value; }
        }

        public int ExperienciaUsuario
        {
            get { return experienciaUsuario; }
            set { experienciaUsuario = value; }
        }

        public int NivelUsuario
        {
            get { return nivelUsuario; }
            set { nivelUsuario = value; }
        }

        public int DineroUsuario
        {
            get { return dineroUsuario; }
            set { dineroUsuario = value; }
        }

        public string NombreUsuario
        {
            get { return nombreUsuario; }
            set { nombreUsuario = value; }
        }

        public string ClaveUsuario
        {
            get { return claveUsuario; }
            set { claveUsuario = value; }
        }

        public string CorreoUsuario
        {
            get { return correoUsuario; }
            set { correoUsuario = value; }
        }

        public ENUsuario(int id, int personajeusuario, int experiencia, int nivel, int dinero, string nombre, string clave, string correo)
        {
            idUsuario = id;

            PersonajeUsuario = personajeusuario;
            if (experiencia < 0)
                ExperienciaUsuario = 0;
            else
                ExperienciaUsuario = experiencia;
            if (nivel < 1)
                NivelUsuario = 1;
            else
                NivelUsuario = nivel;

            if (dinero < 0)
                DineroUsuario = 0;
            else
                DineroUsuario = dinero;

            NombreUsuario = nombre;
            ClaveUsuario = clave;
            CorreoUsuario = correo;

        }

        public void insertarUsuario()
        {
             try
             {
                 obj.insertarUsuario(personajeUsuario,ExperienciaUsuario,NivelUsuario,DineroUsuario,NombreUsuario,ClaveUsuario,CorreoUsuario);
             }
             catch(Exception ex)
             {
                throw ex;
             }
        }

        public void borrarUsuario()
        {
            try
            {
                obj.borrarUsuario(IdUsuario);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void editarUsuario()
        {
            try
            {
                obj.editarUsuario(idUsuario, PersonajeUsuario, ExperienciaUsuario, NivelUsuario, DineroUsuario, NombreUsuario, ClaveUsuario, CorreoUsuario);
            }
            catch (Exception ex)
            {
                throw ex;
            }



        }

        public DataSet obtenerUsuarios()
        {
            try
            {
                return obj.obtenerUsuarios();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void obtenerUsuario()
        {

            //devolver
            try
            {
                DataTable tabla = obj.obtenerUsuario(idUsuario);

                nombreUsuario = tabla.Rows[0][1].ToString();
                claveUsuario = tabla.Rows[0][2].ToString();
                personajeUsuario = int.Parse(tabla.Rows[0][3].ToString());
                correoUsuario = tabla.Rows[0][4].ToString();
                experienciaUsuario = int.Parse(tabla.Rows[0][5].ToString());
                dineroUsuario = int.Parse(tabla.Rows[0][6].ToString());
                nivelUsuario = int.Parse(tabla.Rows[0][7].ToString());

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable obtenerUsuarioNombre(string nombre, string nom_des)
        {
            try
            {
                return obj.obtenerUsuarioNombre(nombre, nom_des);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        // obtiene todos los tipos de personajes para el buscador web
        public SqlDataReader obtenerTipoPersonajes()
        {
            try
            {
                return obj.obtenerTipoPersonajesCAD();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        // busca los personajes pasandole la query
        public SqlDataReader buscarWeb(string comando)
        {
            try
            {
                return obj.buscarWebCAD(comando);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        // busca los personajes pasandole la query
        public SqlDataReader comprobarNombreUsuario(string comando)
        {
            try
            {
                return obj.buscarWebCAD(comando);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        // actualiza la exp del usuario
        public void actualizarExp(int exp, string id) 
        {
            try
            {
               obj.actualizarExpCAD(exp, id);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
